
export default `
import { Workbook } from 'exceljs';
import squery from '@feidao/web/atom/nodejs/db/sql_query';
import format from '@feidao/web/atom/nodejs/dt/format';
import { systemid } from '../config';
import { ICommonParams } from '@feidao/service/interfaces';


export default async function atom(msg: ICommonParams, action_id: string, session_id: string, spaceid: string) {
	// 文档地址 https://github.com/guyonroche/exceljs#readme
	// 使用示例 https://feidao-edu.gitee.io/taoqf/201805020916.html

	// 创建一个工作薄实例
	const wb = new Workbook();

	// 可以添加工作薄的描述
	wb.creator = 'feidao';
	// creator: string;
	// lastModifiedBy: string;
	// created: Date;
	// modified: Date;
	// lastPrinted: Date;
	// Set workbook dates to 1904 date system
	// wb.properties.date1904 = true;
	// 	wb.views = [
	//   {
	//     x: 0, y: 0, width: 10000, height: 20000,
	//     firstSheet: 0, activeTab: 1, visibility: 'visible'
	//   }
	// ]

	// 添加一个页签，可以添加多个页签
	// 不输入名称则使用默认名称，可以针对该页签添加属性
	// options = {properties:{}, pageSetup:{}, views:[{}]}
	const dict1 = wb.addWorksheet('dict1');

	// 设置该页签打印格式，纸张为A5，横版，表格固定打印表头，设置打印区域，只有打印区域的内容可以进行打印
	dict1.pageSetup = {
		paperSize: 11, // 纸张为A5
		orientation: 'landscape', // 横版
		printTitlesRow: '1:1', // 表格固定打印表头，表头只有一行，多行为n1:n2
		printArea: 'A1:G20'
	}

	// 在页签dict1中添加表头，表头一定在第一行（如果其他内容在第一行，添加的表头也在第一行）
	// { header: '品牌名称', key: 'brand_name', width: 20 ,outlineLevel: 2, hidden: false, style: {numFmt: '', font:{}, alignment:{}, border:{}, fill:{} }},
	dict1.columns = [
		{ header: '品牌名称', key: 'brand_name', width: 20, outlineLevel: 2, hidden: false },
		{ header: '品牌编号', key: 'brand_no', width: 20 },//B
		{ header: '商品编号', key: 'commodityid', width: 20 },//C
		{ header: '商品名称', key: 'commodity_name', width: 20 },//D
		{ header: '创建人', key: 'creater', width: 20 },// E
		{ header: '描述', key: 'description', width: 20 },// E
		{ header: '创建时间', key: 'createdate_str', width: 20 },// E
		{ header: '修改人', key: 'editname', width: 20 },// E
	];

	const sql = \`
SELECT
C.brand_name,
	C.brand_no,
	C.commodityid,
	C.commodity_name,
	C.creater,
	C.description,
	C.createdate,
	C.editdate,
	C.editname
FROM
commodity C
	\`;
	const { exec, prepare } = await squery(action_id, session_id, spaceid, systemid);
	prepare(sql);
	const [res] = await exec();

	// 对日期进行处理
	const data = res.map((item) => {
		item['createdate_str'] = format(item['createdate'], 'yyyy-mm-dd hh:MM:ss');
		return item;
	});

	// 将数据放入表格中，查询出的数据字段名和表头中定义的key向对应
	dict1.addRows(data);

	const buff = await wb.xlsx.writeBuffer();
	return {
		buff,
		content_type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
		attachment: '文件名称.xlsx'
	};
}
`;
